
dojo.provide("dojo.widget.PopupContainer");dojo.require("dojo.html.style");dojo.require("dojo.html.layout");dojo.require("dojo.html.selection");dojo.require("dojo.html.iframe");dojo.require("dojo.event.*");dojo.require("dojo.widget.*");dojo.require("dojo.widget.HtmlWidget");dojo.declare("dojo.widget.PopupContainerBase",null,function(){this.queueOnAnimationFinish=[];},{isShowingNow:false,currentSubpopup:null,beginZIndex:1000,parentPopup:null,parent:null,popupIndex:0,aroundBox:dojo.html.boxSizing.BORDER_BOX,openedForWindow:null,processKey:function(evt){return false;},applyPopupBasicStyle:function(){with(this.domNode.style){display="none";position="absolute";}},aboutToShow:function(){},open:function(x,y,parent,explodeSrc,orient,padding){if(this.isShowingNow){return;}
if(this.animationInProgress){this.queueOnAnimationFinish.push(this.open,arguments);return;}
this.aboutToShow();var around=false,node,aroundOrient;if(typeof x=="object"){node=x;aroundOrient=explodeSrc;explodeSrc=parent;parent=y;around=true;}
this.parent=parent;dojo.body().appendChild(this.domNode);explodeSrc=explodeSrc||parent["domNode"]||[];var parentPopup=null;this.isTopLevel=true;while(parent){if(parent!==this&&(parent.setOpenedSubpopup!=undefined&&parent.applyPopupBasicStyle!=undefined)){parentPopup=parent;this.isTopLevel=false;parentPopup.setOpenedSubpopup(this);break;}
parent=parent.parent;}
this.parentPopup=parentPopup;this.popupIndex=parentPopup?parentPopup.popupIndex+1:1;if(this.isTopLevel){var button=dojo.html.isNode(explodeSrc)?explodeSrc:null;dojo.widget.PopupManager.opened(this,button);}
if(this.isTopLevel&&!dojo.withGlobal(this.openedForWindow||dojo.global(),dojo.html.selection.isCollapsed)){this._bookmark=dojo.withGlobal(this.openedForWindow||dojo.global(),dojo.html.selection.getBookmark);}else{this._bookmark=null;}
if(explodeSrc instanceof Array){explodeSrc={left:explodeSrc[0],top:explodeSrc[1],width:0,height:0};}
with(this.domNode.style){display="";zIndex=this.beginZIndex+this.popupIndex;}
if(around){this.move(node,padding,aroundOrient);}else{this.move(x,y,padding,orient);}
this.domNode.style.display="none";this.explodeSrc=explodeSrc;this.show();this.isShowingNow=true;},move:function(x,y,padding,orient){var around=(typeof x=="object");if(around){var aroundOrient=padding;var node=x;padding=y;if(!aroundOrient){aroundOrient={"BL":"TL","TL":"BL"};}
dojo.html.placeOnScreenAroundElement(this.domNode,node,padding,this.aroundBox,aroundOrient);}else{if(!orient){orient="TL,TR,BL,BR";}
dojo.html.placeOnScreen(this.domNode,x,y,padding,true,orient);}},close:function(force){if(force){this.domNode.style.display="none";}
if(this.animationInProgress){this.queueOnAnimationFinish.push(this.close,[]);return;}
this.closeSubpopup(force);this.hide();if(this.bgIframe){this.bgIframe.hide();this.bgIframe.size({left:0,top:0,width:0,height:0});}
if(this.isTopLevel){dojo.widget.PopupManager.closed(this);}
this.isShowingNow=false;if(this.parent){setTimeout(dojo.lang.hitch(this,function(){try{if(this.parent["focus"]){this.parent.focus();}else{this.parent.domNode.focus();}}
catch(e){dojo.debug("No idea how to focus to parent",e);}}),10);}
if(this._bookmark&&dojo.withGlobal(this.openedForWindow||dojo.global(),dojo.html.selection.isCollapsed)){if(this.openedForWindow){this.openedForWindow.focus();}
try{dojo.withGlobal(this.openedForWindow||dojo.global(),"moveToBookmark",dojo.html.selection,[this._bookmark]);}
catch(e){}}
this._bookmark=null;},closeAll:function(force){if(this.parentPopup){this.parentPopup.closeAll(force);}else{this.close(force);}},setOpenedSubpopup:function(popup){this.currentSubpopup=popup;},closeSubpopup:function(force){if(this.currentSubpopup==null){return;}
this.currentSubpopup.close(force);this.currentSubpopup=null;},onShow:function(){dojo.widget.PopupContainer.superclass.onShow.apply(this,arguments);this.openedSize={w:this.domNode.style.width,h:this.domNode.style.height};if(dojo.render.html.ie){if(!this.bgIframe){this.bgIframe=new dojo.html.BackgroundIframe();this.bgIframe.setZIndex(this.domNode);}
this.bgIframe.size(this.domNode);this.bgIframe.show();}
this.processQueue();},processQueue:function(){if(!this.queueOnAnimationFinish.length){return;}
var func=this.queueOnAnimationFinish.shift();var args=this.queueOnAnimationFinish.shift();func.apply(this,args);},onHide:function(){dojo.widget.HtmlWidget.prototype.onHide.call(this);if(this.openedSize){with(this.domNode.style){width=this.openedSize.w;height=this.openedSize.h;}}
this.processQueue();}});dojo.widget.defineWidget("dojo.widget.PopupContainer",[dojo.widget.HtmlWidget,dojo.widget.PopupContainerBase],{isContainer:true,fillInTemplate:function(){this.applyPopupBasicStyle();dojo.widget.PopupContainer.superclass.fillInTemplate.apply(this,arguments);}});dojo.widget.PopupManager=new function(){this.currentMenu=null;this.currentButton=null;this.currentFocusMenu=null;this.focusNode=null;this.registeredWindows=[];this.registerWin=function(win){if(!win.__PopupManagerRegistered){dojo.event.connect(win.document,"onmousedown",this,"onClick");dojo.event.connect(win,"onscroll",this,"onClick");dojo.event.connect(win.document,"onkey",this,"onKey");win.__PopupManagerRegistered=true;this.registeredWindows.push(win);}};this.registerAllWindows=function(targetWindow){if(!targetWindow){targetWindow=dojo.html.getDocumentWindow(window.top&&window.top.document||window.document);}
this.registerWin(targetWindow);for(var i=0;i<targetWindow.frames.length;i++){try{var win=dojo.html.getDocumentWindow(targetWindow.frames[i].document);if(win){this.registerAllWindows(win);}}
catch(e){}}};this.unRegisterWin=function(win){if(win.__PopupManagerRegistered){dojo.event.disconnect(win.document,"onmousedown",this,"onClick");dojo.event.disconnect(win,"onscroll",this,"onClick");dojo.event.disconnect(win.document,"onkey",this,"onKey");win.__PopupManagerRegistered=false;}};this.unRegisterAllWindows=function(){for(var i=0;i<this.registeredWindows.length;++i){this.unRegisterWin(this.registeredWindows[i]);}
this.registeredWindows=[];};dojo.addOnLoad(this,"registerAllWindows");dojo.addOnUnload(this,"unRegisterAllWindows");this.closed=function(menu){if(this.currentMenu==menu){this.currentMenu=null;this.currentButton=null;this.currentFocusMenu=null;}};this.opened=function(menu,button){if(menu==this.currentMenu){return;}
if(this.currentMenu){this.currentMenu.close();}
this.currentMenu=menu;this.currentFocusMenu=menu;this.currentButton=button;};this.setFocusedMenu=function(menu){this.currentFocusMenu=menu;};this.onKey=function(e){if(!e.key){return;}
if(!this.currentMenu||!this.currentMenu.isShowingNow){return;}
var m=this.currentFocusMenu;while(m){if(m.processKey(e)){e.preventDefault();e.stopPropagation();break;}
m=m.parentPopup||m.parentMenu;}},this.onClick=function(e){if(!this.currentMenu){return;}
var scrolloffset=dojo.html.getScroll().offset;var m=this.currentMenu;while(m){if(dojo.html.overElement(m.domNode,e)||dojo.html.isDescendantOf(e.target,m.domNode)){return;}
m=m.currentSubpopup;}
if(this.currentButton&&dojo.html.overElement(this.currentButton,e)){return;}
this.currentMenu.closeAll(true);};};